package xyz.xuminghai.javafx_learn.scene.control;

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Region;
import javafx.stage.Stage;

/**
 * 2023/5/18 0:04 星期四<br/>
 * Label 是一个不可编辑的文本控件。 Label 对于显示需要适合特定空间的文本很有用，
 * 因此可能需要使用省略号或截断来调整字符串的大小以适合。
 * 标签也很有用，因为它们可以具有助记符，如果使用助记符，
 * 会将焦点发送到列为labelFor属性目标的控件。
 *
 * @author xuMingHai
 */
public class LabelApp extends Application {

    private final HBox hBox = new HBox(30.0);

    public static void main(String[] args) {
        Application.launch(args);
    }

    @Override
    public void init() {
        Label label = new Label("label");
        label.setPrefWidth(35.0);
        Label longLabel = new Label("123456789");
        longLabel.setPrefWidth(35.0);
        // 提示
        longLabel.setTooltip(new Tooltip(longLabel.getText()));
        // 鼠标悬浮改变宽度
        longLabel.setOnMouseEntered(event -> longLabel.setPrefWidth(Region.USE_COMPUTED_SIZE));
        longLabel.setOnMouseExited(event -> longLabel.setPrefWidth(35.0));

        hBox.setAlignment(Pos.CENTER);
        hBox.getChildren().addAll(label, longLabel);
    }

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle(getClass().getSimpleName());
        Scene scene = new Scene(hBox, 800, 600);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}
